- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин
Шрифт:
Интервал:
Закладка:
Отображением интерфейса JavaFX-приложения является графическое представление графа сцены.
Каждый узел графа JavaFX-сцены – это компонент графического интерфейса пользователя – имеет такие свойства как идентификатор, CSS-стиль, границы, визуальные эффекты, прозрачность, трансформации, обработчики событий, состояние, режим наложения и участие в анимации.
Для отображения интерфейса, разработанного на основе платформы JavaFX, и соответственно создания графического представления графа сцены, среда выполнения JavaFX Runtime предоставляет графическую систему, содержащую следующие модули:
Prism – производит растеризацию и рендеринг JavaFX-сцен с использованием аппаратного ускорения и на основе программного обеспечения – технологии DirectX 9 – для Windows XP и Windows Vista, DirectX 11 – для Windows 7 и OpenGL – для Mac, Linux, Embedded.
При отсутствии поддержки аппаратного ускорения рендеринг осуществляется на основе технологии Java2D.
Glass Windowing Toolkit – это платформо-зависимая реализация, связывающая платформу JavaFX с операционной системой компьютера.
Помимо обеспечения системных сервисов управления окном, видом и временем, система Glass отвечает за очередь событий.
В отличие от графической системы Abstract Window Toolkit (AWT), которая создает свою собственную очередь событий и два потока – один для работы Peer-компонентов, а другой для работы Java-компонентов, система Glass использует очередь событий операционной системы и работает в том же потоке, что и JavaFX-приложение.
При этом основной поток JavaFX-приложения отличается от AWT и Swing потока Event Dispatch Thread (EDT).
Quantum Toolkit – связывает системы Prism и Glass вместе и делает их доступными для других модулей среды выполнения JavaFX Runtime.
Media Engine – обеспечивает воспроизведение MP3, AIFF и WAV аудиофайлов и FLV видеофайлов.
Web Engine – основывается на проекте WebKit и обеспечивает поддержку HTML5, CSS, JavaScript, DOM и SVG, отображение локального и удаленного HTML-контента, обновление и редактирование HTML-контента с поддержкой истории и навигации, обработку событий, выполнение JavaScript-кода и применения эффектов.
Для обеспечения работы JavaFX-приложения среда выполнения JavaFX Runtime создает следующий набор параллельных потоков:
Основной поток JavaFX-приложения JavaFX Application Thread – отвечает за обновление сцены, обработку анимации и событий.
Поток рендеринга системы Prism, который может содержать дополнительные потоки растеризации – отвечает за отрисовку сцены.
Фоновый медиа поток – отвечает за декодирование, буферизацию и воспроизведение аудио и видео.
Синхронизация графа сцены с его графическим представлением осуществляется с помощью событий Pulse, которые генерируются средой выполнения JavaFX Runtime с максимальной частотой 1/60 секунды и посылаются в очередь событий при анимации и всякий раз, когда изменяется граф сцены, вызывая перерисовку сцены с применением компоновок и стилей.
Модель программирования приложений платформы JavaFX
Точкой входа в JavaFX-приложение служит Java-класс, расширяющий абстрактный класс javafx. application. Application и содержащий его переопределенный метод start.
Главный класс JavaFX-приложения должен переопределить абстрактный метод start класса Application, обеспечивающий создание и отображение сцены JavaFX-приложения.
Методы init, start и stop класса Application являются методами обратного вызова жизненного цикла JavaFX-приложения.
Методы init и stop класса Application могут использоваться для инициализации данных и освобождения ресурсов JavaFX-приложения.
Метод launch класса Application запускает настольное приложение в методе main.
Вызов метода launch класса Application инициализирует среду выполнения JavaFX.
При этом среда выполнения JavaFX выполняет следующие действия.
Она создает экземпляр класса приложения, вызывает его метод init.
Далее вызывает метод start.
И ожидает завершения приложения, которое происходит, когда происходит одно из следующих событий:
Приложение вызывает метод Platform. exit.
Класс Platform пакета application является вспомогательным классом.
Последнее окно приложения закрывается, и атрибут implicitExit класса Platform имеет значение true.
После этого среда выполнения вызывает метод stop.
Обратите внимание, что метод start является абстрактным в классе Application и должен быть переопределен.
Методы init и stop имеют конкретные реализации, которые ничего не делают.
Вызов метода Platform. exit – это предпочтительный способ явно закрыть приложение JavaFX.
Непосредственный вызов обычного метода System. exit является приемлемой альтернативой, но не позволяет запустить метод stop.
Среда выполнения JavaFX создает поток приложения JavaFX Application Thread для запуска метода start, обработки входных событий и выполнения анимации.
Создание объектов Scene и Stage, а также модификация графа сцены, должны выполняться в потоке приложения JavaFX Application Thread.
Метод init вызывается в потоке запуска, а не в потоке приложения JavaFX Application Thread.
Это означает, что приложение не должно напрямую создавать объекты Scene или Stage в методе init.
Так как метод init вызывается перед созданием главного потока приложения JavaFX Application Thread, то инициализация JavaFX-приложения в методе init с использованием узлов графа сцены должна осуществляться с применением статического метода Platform.runLater, который позволяет выполнить код в потоке JavaFX Application Thread в какой-то момент времени в будущем.
Метод start класса Application содержит в качестве параметра объект Stage, представляющий графический контейнер главного окна JavaFX-приложения.
Данный объект Stage создается средой выполнения при запуске JavaFX-приложения и передается в метод start главного класса JavaFX-приложения, что позволяет использовать методы объекта Stage для установки и отображения сцены JavaFX-приложения.
Вместо объекта Stage, аргумента метода start, разработчик может создать свой экземпляр класса Stage для отображения сцены JavaFX-приложения.
Перед установкой и отображением сцены в графическом контейнере Stage главного окна JavaFX-приложения необходимо создать граф сцены, состоящий из корневого узла и его дочерних элементов, и на его основе создать объект Scene сцены.
Как правило, в качестве корневого узла используется объект Group или компоновки пакета scene.layout, которые создаются с помощью конструктора и используются в качестве аргумента конструктора при создании объекта Scene.
Дочерние узлы графа сцены, представляющие графику, элементы контроля интерфейса, медиаконтент, добавляются в корневой узел с помощью метода getChildren.add или метода getChildren.addAll.
При этом дочерние узлы могут иметь визуальные эффекты, режимы наложения, CSS-стили, прозрачность, трансформации, обработчики событий, участвовать в анимации и др.
После создания корневого узла сцены, добавления в него дочерних компонентов.
Создания на основе корневого узла объекта Scene, главное окно Stage устанавливает сцену методом setScene.
Для главного окна устанавливается заголовок методом setTitle.
И окно приложения отображается методом show.
Создание и развертывание JavaFX-приложений
Наиболее полно для создания JavaFX приложений подходит среда разработки NetBeans.
Для создания JavaFX приложения достаточно в меню Файл выбрать Создать проект и в разделе JavaFX выбрать Приложение JavaFX.
В результате будет сгенерирована основа JavaFX приложения.
Для сборки готового приложения, с помощью выбора команды меню Очистить и построить среды NetBeans в каталоге проекта создается папка dist, содержащая исполняемый JAR-файл JavaFX-приложения, а также JNLP-файл и HTML-страничку для JWS-развертывания приложения.
Также вы можете собрать настольное автономное приложение с EXE-файлом и JavaFX средой выполнения.
Для этого вам нужно предварительно скачать и установить Inno Setup – бесплатный установщик для программ Windows.
Затем вам нужно добавить каталог инструмента Inno Setup в переменную Path переменных системы.
В свойствах проекта нужно отметить флажок Разрешить создание родных пакетов.
После этого при нажатии правой кнопкой мыши на проекте появится меню Пакет как.
Выбрав Установщик EXE, вы получите в каталоге dist папку bundles

